for t in range(int(input())):
a, b = map(int, input().split())
if b == 1:
print('YES')
for k in range(1, a + 1):
print(k)
elif a == 1:
print('NO')
else:
if (a * b) % 2 == 0 and a % 2 == 0:
print('YES')
for i in range(a // 2):
print(*list(range(1 + i * b * 2, (i + 1 ) * b * 2 + 1, 2)))
print(*list(range(2 + i * b * 2, (i + 1 ) * b * 2 + 2, 2)))
else:
print('NO')
#include <bits/stdc++.h>
using namespace std;
#define int long long int
int32_t main(){
// your code goes here
int t;
cin>>t;
while(t--){
int n,k;
cin>>n>>k;
if(k==1){
cout<<"YES"<<"\n";
for(int i=1;i<=n;i++){
cout<<i<<"\n";
}
}
else{
if(n%2!=0){
cout<<"NO"<<"\n";
}
else{
cout<<"YES"<<"\n";
int v[n+1][k+1];
int cnt=1;
for(int i=1;i<=n/2;i++){
for(int j=1;j<=k;j++){
v[i][j] = cnt;
cnt+=2;
}
}
cnt=2;
for(int i=n/2 +1;i<=n;i++){
for(int j=1;j<=k;j++){
v[i][j] = cnt;
cnt+=2;
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=k;j++){
cout<<v[i][j]<<" ";
}
cout<<"\n";
}
}
}
}
return 0;
}
732B - Cormen --- The Best Friend Of a Man | 1369A - FashionabLee |
1474B - Different Divisors | 1632B - Roof Construction |
388A - Fox and Box Accumulation | 451A - Game With Sticks |
768A - Oath of the Night's Watch | 156C - Cipher |
545D - Queue | 459B - Pashmak and Flowers |
1538A - Stone Game | 1454C - Sequence Transformation |
165B - Burning Midnight Oil | 17A - Noldbach problem |
1350A - Orac and Factors | 1373A - Donut Shops |
26A - Almost Prime | 1656E - Equal Tree Sums |
1656B - Subtract Operation | 1656A - Good Pairs |
1367A - Short Substrings | 87A - Trains |
664A - Complicated GCD | 1635D - Infinite Set |
1462A - Favorite Sequence | 1445B - Elimination |
1656C - Make Equal With Mod | 567A - Lineland Mail |
1553A - Digits Sum | 1359B - New Theatre Square |